package main

import "fmt"

/*
常量与其他语言一样，一旦定义不可更改，Go中的常量可以定义为在方法外（全局常量）也可以定义在方法内（局部常量）
常量与变量不同，变量定义在方法内时要求必须使用，常量定义在方法内时不做使用的要求

关于iota关键字，经过测试，他的底层变化与他在方法中所处第几行有关，但较为复杂，后面再说
*/

const c1 = 10
const (
	ab  = 10
	c8  = iota //iota关键字，属于系统的枚举类变量
	c9  = iota //c9为1
	c10        //如果上一行已经用过了iota关键字，下一行的赋值没进行任何变量声明，实际上下一行也会被赋值上iota
	//c10就算上方未使用过iota，他也会去复制上一行的值内容
	c2 = 10.0
	c3 = false
)

func main() {
	const c4 = iota
	//const c100;//全局常量存在不初始化也可以复制上一行的值内容，局部常量则不行
	const c5 = iota
	const c6 = iota
	fmt.Printf("%d\t%d\t%d\t", c4, c5, c6) //iota关键字不适用于方法内的变量赋值，因此三个数都是0 0 0
}
